#ifndef CONFIGTOOL_H
#define CONFIGTOOL_H

#include <QMainWindow>
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QLabel>
#include <QTextEdit>
#include <QListWidget>
#include <QTableWidget>
#include <QLineEdit>
#include <QSplitter>
#include <QFrame>
#include <QMessageBox>
#include <QFileDialog>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDateTime>
#include <QHeaderView>
#include <QTimer>
#include <QDir>
#include <QFileInfo>
#include <QSettings>
#include <QCheckBox>
#include <vector>
#include <utility>

class ConfigTool : public QMainWindow
{
    Q_OBJECT

public:
    ConfigTool(QWidget *parent = nullptr);
    ~ConfigTool();

private slots:
    void selectMainImages();
    void selectDetailImages();
    void selectSkuImages();
    void loadExternalConfigs();
    void removeSelectedConfig();
    void saveMergedConfig();
    void showSelectedConfig(QListWidgetItem *item);
    void filterSkuItems();
    void batchUpdatePrice();
    void batchUpdateCode();
    void onSkuItemChanged(QTableWidgetItem *item);

    // 新增方法
    void scanConfigsDirectory();
    void updateConfigSelection();
    void selectAllConfigs();
    void deselectAllConfigs();

private:
    void initMainWindow();
    void updateConfigText();
    void showImageTable(const QString &title, const QVariant &displayData);
    void fillTableData(const QVariant &displayData, const QList<int> &filteredRows = QList<int>());
    void updateSkuData(int row, int col, const QString &value);

    // 数据存储
    QStringList m_mainImages;
    QStringList m_detailImages;
    QList<QList<QVariant>> m_skuData; // [path, price, code]
    QList<QPair<QString, QJsonObject>> m_externalConfigs;
    QString m_currentImgType;

    // 路径记忆
    QString m_lastImageDir;
    QString m_lastConfigDir;
    QString m_lastSaveDir;

    // UI组件
    QWidget *m_centralWidget;
    QVBoxLayout *m_mainLayout;

    // 状态标签
    QLabel *m_mainStatus;
    QLabel *m_detailStatus;
    QLabel *m_skuStatus;
    QLabel *m_externalStatus;

    // 文本预览
    QTextEdit *m_imageConfigText;
    QTextEdit *m_externalConfigText;

    // 列表和表格
    QListWidget *m_configCheckList;
    QTableWidget *m_table;

    // SKU功能组件
    QLineEdit *m_searchInput;
    QLineEdit *m_batchPrice;
    QLineEdit *m_batchCode;

    // 新增控件
    QPushButton *m_selectAllBtn;
    QPushButton *m_deselectAllBtn;
    QLabel *m_scanStatus;

    // 窗口
    QMainWindow *m_resultWindow;
    QList<int> m_visibleRows;
};

#endif // CONFIGTOOL_H
